package part2_q2;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;

import common.CDeterminationPolarite;
import common.CMultinomial;

/**
 *  optimal Multinomial : (false,0.1,25)
 *  R�sultat sur fichier de test "test.txt" : 
 */
public class DeuxiemeApproche {
	
	static String fichierDeterminationPolarite = "kitchen/justlab_q2_2.txt";

	public static void main(String args[]){
		try {

			long start = System.currentTimeMillis(); 
			
			ArrayList<File> fichiersApprentissage = new ArrayList<File>();
			fichiersApprentissage.add(new File("kitchen/training.txt"));

			// 1�re �tape : on essaie de d�terminer la polarit� des critiques du fichier
			// "unlab.txt", avec comme jeu d'apprentissage "training.txt"
			// Ceci va avoir pour effet de cr��r un fichier "justlab_q2_2.txt", contenant
			// exactement toutes les critiques de "unlab.txt", mais �tiquet�es

			PrintWriter ecrivain;
			ecrivain =  new PrintWriter(new BufferedWriter(new FileWriter("DeuxiemeApprocheTauxDeReussite.csv")));

			ecrivain.println("Itération;TauxReussite");

			// Pour chaque it�ration, on va :
			// - utiliser le fichier justlab.txt fraichement
			// �tiquet� (par l'it�ration pr�c�dente) comme jeu d'apprentissage, pour
			// pouvoir red�terminer la polarit� du jeu de test unlab.txt
			// Le résultat sera donc placé dans le fichier justlab_q2_2.txt
			
			// - utiliser le fichier justlab_q2_2.txt fraichement
			// �tiquet� (par l'it�ration pr�c�dente) comme jeu d'apprentissage, pour
			// pouvoir �valuer le taux de r�ussite sur le fichier de d�veloppement "test.txt"
			
			for(int i = 0; i < 3; i++){

				// On cherche � red�terminer la polarit� des critiques du fichier
				// unlab.txt
				
				//@SuppressWarnings("unused")
				CDeterminationPolarite mm = new CDeterminationPolarite
				(fichiersApprentissage, new File("kitchen/unlab.txt"),fichierDeterminationPolarite, false,0.1,25.0);
				
				mm.executerCreationClasseur();

				// On change de fichier d'apprentissage : ce n'est plus le fichier
				// training.txt, mais le fichier "justlab_q2_2.txt", fraichement étiqueté
				fichiersApprentissage.clear();
				fichiersApprentissage.add(new File(fichierDeterminationPolarite));
				
				// On cherche � estimer le taux de r�ussite sur le fichier de test
				CMultinomial m = new CMultinomial
				(fichiersApprentissage, new File("kitchen/test.txt"),false,0.1,25.0, false);
				m.executerCreationClasseur();
				
				ecrivain.println(i+";"+m.getTauxReussite());
				ecrivain.flush();		
			}

			ecrivain.close();
			
			long time= System.currentTimeMillis(); 
			System.out.println("Programme : " + (((time - start)/1000)) + "secondes");
		}
		catch (Exception e){
			e.printStackTrace();
		}
	}
}
